
---@class Component : Object
---@field enabled boolean
---@field entity Entity
local Component = {}



---@class Transform : Component
---@field localScale Vector3f
---@field localOrientation Quaternionf
---@field localMatrix Matrix4x4f
---@field localEulerAngle Vector3f
---@field parent Transform
---@field children Vector
local Transform = {}
---@param childTrans Transform
---@return boolean
function Transform:addTransform (childTrans) end
---@param childTrans Transform
---@return boolean
function Transform:removeTransform (childTrans) end
---@return Vector3f
function Transform:getWorldPosition () end
---@param pos Vector3f
---@return Vector3f
function Transform:setWorldPosition (pos) end
---@return Vector3f
function Transform:getWorldScale () end
---@param scale Vector3f
---@return Vector3f
function Transform:setWorldScale (scale) end
---@return Quaternionf
function Transform:getWorldOrientation () end
---@param orientation Quaternionf
---@return Quaternionf
function Transform:setWorldOrientation (orientation) end
---@return Matrix4x4f
function Transform:getWorldMatrix () end
---@param worldMat Matrix4x4f
---@return Matrix4x4f
function Transform:setWorldMatrix (worldMat) end



---@class Renderer : Component
---@field sortingOrder number
---@field autoSortingOrder boolean
---@field materials Vector
---@field material Material
---@field useFrustumCulling boolean
local Renderer = {}



---@class MeshRenderer : Renderer
---@field mesh Mesh
---@field castShadow boolean
local MeshRenderer = {}



---@class Camera : Component
---@field layerVisibleMask DynamicBitset
---@field renderOrder number
---@field type CameraType
---@field clearColor Color
---@field clearType CameraClearType
---@field alwaysClear boolean
---@field viewport Rect
---@field fovy number
---@field orthoScale number
---@field zNear number
---@field zFar number
---@field inputTexture Texture2D
---@field renderTexture RenderTexture
---@field projectionMatrix Matrix4x4f
---@field isRootCamera boolean
local Camera = {}
---@param bbox AABB
---@return boolean
function Camera:isOutOfFrustum (bbox) end
---@param screenSpacePoint Vector3f
---@return Vector3f
function Camera:screenToWorldPoint (screenSpacePoint) end
---@param viewPort Vector3f
---@return Vector3f
function Camera:viewportToWorldPoint (viewPort) end
---@param worldSpace Vector3f
---@return Vector3f
function Camera:worldToViewportPoint (worldSpace) end
---@param layer number
---@return boolean
function Camera:isLayerVisible (layer) end
---@param isolated boolean
---@return boolean
function Camera:clearTarget (isolated) end
---@return Matrix4x4f
function Camera:getWorldToClipMatrix () end
---@return Matrix4x4f
function Camera:getCameraToWorldMatrix () end
---@return Vector3f
function Camera:getLookAt () end



---@class FaceCapture : Component
---@field faceid number
---@field captureType CaptureType
---@field captureVersion number
---@field alignarray Vec2Vector
---@field alignoffset Vector2f
---@field alignz number
---@field isGlobal boolean
---@field useSceneCameraFov boolean
local FaceCapture = {}



---@class TableComponent : Component
---@field table Map
---@field type string
local TableComponent = {}



---@class ScriptComponent : Component
---@field path string
---@field properties Map
---@field className string
local ScriptComponent = {}



---@class Audio : Component
---@field clip AudioClip
---@field playOnAwake boolean
---@field loop boolean
local Audio = {}
function Audio:play () end
function Audio:pause () end
function Audio:resume () end
function Audio:stop () end



---@class SDFText : Component
---@field drivenByScript boolean
---@field forceDegeneratedEs2Enabled boolean
---@field str string
---@field fontSize number
---@field fontPath string
---@field fallbackFontPath string
---@field wordGap number
---@field innerPadding number
---@field lineGap number
---@field fixedRectEnabled boolean
---@field autoFontSize boolean
---@field rect Rect
---@field autoWrapWidth number
---@field textColor Vector4f
---@field randomGridSize Vector2f
---@field shadowEnabled boolean
---@field shadowColor Vector4f
---@field shadowOffset Vector2f
---@field shadowSmoothing number
---@field shadowBlur number
---@field outlineEnabled boolean
---@field outlineWidth number
---@field outlineMaxWidth number
---@field outlineColor Vector4f
---@field boldWidth number
---@field italicDegree number
---@field underlineEnabled boolean
---@field underlineWidth number
---@field underlineOffset number
---@field backgroundEnabled boolean
---@field backgroundColor Vector4f
---@field alpha number
---@field typeSettingKind TypeSettingKind
---@field textAlign TextAlign
---@field chars Vector
---@field ktvEnabled boolean
---@field ktvDirection number
---@field ktvAlpha number
---@field renderToRT boolean
---@field targetRTExtraSize Vector2f
---@field ktvTransparentRatio number
local SDFText = {}
function SDFText:forceTypeSetting () end
function SDFText:forceSdfTexture () end
---@return Renderer
function SDFText:getRenderer () end
---@return TextTexture
function SDFText:getTextTexture () end



---@class IFTransform2d : Transform
---@field position Vector2f
---@field rotation number
---@field scale Vector2f
---@field size Vector2f
---@field pivot Vector2f
---@field flipX number
---@field flipY number
---@field depth number
local IFTransform2d = {}



---@class IFLayer2d : Renderer
---@field blendMode IFBlendMode
---@field blendAlpha number
---@field blendAlphaCkeck boolean
---@field drawCallNum number
---@field maskType IFMaskType
---@field inverted boolean
local IFLayer2d = {}



---@class IFCanvas2d : Component
---@field resolutionType IFResolutionType
---@field resolutionSize Vector2f
local IFCanvas2d = {}



---@class IFWidget : Component
---@field alpha number
---@field cascadeAlphaEnabled boolean
---@field sharedMaterial Material
local IFWidget = {}



---@class IFSprite2d : IFWidget
---@field type IFSprite2dType
---@field colorTint Color
---@field texture Texture2D
---@field filledType IFFilledType
---@field filledStartPos number
---@field filledRange number
---@field ellipseX number
---@field ellipseY number
---@field topLeftPoint Vector2f
---@field topRightPoint Vector2f
---@field bottomLeftPoint Vector2f
---@field bottomRightPoint Vector2f
local IFSprite2d = {}
---@return Vector2f
function IFSprite2d:getImageFrameSize () end



---@class AnimSeqComponent : Component
---@field animSeq AnimSeq
---@field texName string
---@field frameName string
---@field playmode PlayMode
---@field loopCount number
---@field speed number
---@field autoplay boolean
---@field frameIndex number
---@field animSeqMap Map
local AnimSeqComponent = {}
function AnimSeqComponent:play () end
function AnimSeqComponent:pause () end
function AnimSeqComponent:stop () end
---@param index number
function AnimSeqComponent:seek (index) end
---@param localTime number
function AnimSeqComponent:seekToTime (localTime) end
function AnimSeqComponent:resetAnim () end
---@param key string
function AnimSeqComponent:switchAnimseq (key) end



---@class Animator : Component
---@field animations Vector
---@field runningClips Vector
---@field runningWrapModes Map
---@field cullingMode AnimatorCullingMode
local Animator = {}
function Animator:stopAllAnimations () end
---@param clip AnimazClip
---@param wrapMode number
---@param speed number
function Animator:schedule (clip, wrapMode, speed) end
---@param clip AnimazClip
function Animator:unschedule (clip) end
function Animator:pauseAnimator () end
function Animator:resumeAnimator () end
---@param name string
---@return Animaz
function Animator:createAnimation (name) end
---@param name string
---@return Animaz
function Animator:getAnimation (name) end
---@param name string
---@return boolean
function Animator:removeAnimation (name) end



---@class VideoAnimSeq : Component
---@field playmode PlayMode
---@field loopCount number
---@field speed number
---@field autoplay boolean
---@field enableAlphaBlend boolean
local VideoAnimSeq = {}
function VideoAnimSeq:play () end
function VideoAnimSeq:pause () end
function VideoAnimSeq:stop () end
---@param index number
function VideoAnimSeq:seek (index) end
---@param time number
function VideoAnimSeq:seekToTime (time) end
function VideoAnimSeq:resetAnim () end
---@return number
function VideoAnimSeq:getFrameCount () end
---@return number
function VideoAnimSeq:getDuration () end
---@return Vector2f
function VideoAnimSeq:getVideoSize () end
---@return boolean
function VideoAnimSeq:isPlaying () end
